package com.malou.server.ventas.cambio;

import java.util.List;

import javax.servlet.http.HttpSession;

import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.malou.client.seguridad.usuario.Usuario;
import com.malou.client.util.MensajeData;
import com.malou.client.ventas.cambio.Cambio;
import com.malou.client.ventas.cambio.CambioService;
import com.malou.client.ventas.ingresostock.IngresoStock;
import com.malou.client.ventas.salidastock.SalidaStock;
import com.malou.server.base.util.GxtGridPaginate;
import com.malou.server.seguridad.usuario.Usuarios;

public class CambioServiceImpl extends RemoteServiceServlet implements CambioService {

	private static final long serialVersionUID = 1L;

	@Override
	public PagingLoadResult<Cambio> paginateCambio(FilterPagingLoadConfig config) {
		GxtGridPaginate paginate = new GxtGridPaginate();
		paginate.config = config;
		
		return Cambios.getPaginate(paginate);
	}

	private Usuario getUsuarioSession() {
		HttpSession session = getThreadLocalRequest().getSession(true);
		if (session.getAttribute("username") != null){
			String username = (String) session.getAttribute("username");
			
	        return Usuarios.getResponsable(username);  
	    }else{
	    	return null;
	    }
	}
	

	@Override
	public PagingLoadResult<Cambio> paginateDevolucion(
			FilterPagingLoadConfig config) {
		GxtGridPaginate paginate = new GxtGridPaginate();
		paginate.config = config;
		
		return Cambios.getPaginateDevolucion(paginate);
	}

	@Override
	public MensajeData save(Cambio c, List<IngresoStock> listIngreso,
			List<SalidaStock> listSalida) {
		MensajeData data = new MensajeData();
		data.guardado = true;
		Usuario user = getUsuarioSession();
		c.setTienda_id(user.getIdtienda());		
		   
		if(!Cambios.save(c,listIngreso,listSalida)){
			data.guardado = false;
		}		
		return data;
	}

	@Override
	public List<IngresoStock> getListIngresoStock(Integer cambio_id) {
		return Cambios.getListIngresoStock(cambio_id);
	}

	@Override
	public List<SalidaStock> getListSalidaStock(Integer cambio_id) {
		return Cambios.getListSalidaStock(cambio_id);
	}

	@Override
	public MensajeData save(Cambio cam, List<IngresoStock> lis) {
        MensajeData data = new MensajeData();
        data.guardado = true;
        Usuario user = getUsuarioSession();
        cam.setTienda_id(user.getIdtienda());
       
        if(!Cambios.save(cam,lis)){
           data.guardado = false;	
        }
        	
		return data;
	}

	@Override
	public List<Cambio> getListDevoluciones() {
		return Cambios.getListDevoluciones();
	}


}
